﻿#region Using

using System.ServiceModel;

using Common.Base;

using CommunicationLibrary.TransportData.CommandArgs;

#endregion

namespace CommunicationLibrary
{
    [ServiceContract(CallbackContract = typeof(IClient))]
    public interface IServer
    {
        [OperationContract]
        Result RegisterForMatch(string name);

        [OperationContract]
        Result CancelRegistration();

        [OperationContract]
        Result SendBuildCommand(BuildCommandArgs args);

        [OperationContract]
        Result SendBuyUpgradeCommand();

        [OperationContract]
        Result SendFarmerRouteAddCommand(RouteCommandArgs args);

        [OperationContract]
        Result SendMilitiaRouteRemoveCommand(RouteCommandArgs args);

        [OperationContract]
        Result SendMilitiaRouteAddCommand(RouteCommandArgs args);

        [OperationContract]
        Result SendFarmerRouteRemoveCommand(RouteCommandArgs args);

        [OperationContract]
        Result PauseGame();

        [OperationContract]
        Result ResumeGame();

        [OperationContract]
        Result QuitGame();

        [OperationContract]
        Result ReadyForGameStart();
    }
}